package com.nb.service;

import com.mybatisflex.core.paginate.Page;
import com.nb.dto.AssignAclDTO;
import com.nb.dto.AssignDataScopeDTO;
import com.nb.dto.CreateRoleDTO;
import com.nb.dto.RoleQueryDTO;
import com.nb.dto.UpdateRoleDTO;
import com.nb.entity.Role;
import com.nb.vo.RoleVO;

import java.util.List;

public interface RoleService {

    List<Role> list();

    /**
     * 创建角色
     */
    Long createRole(CreateRoleDTO dto);

    /**
     * 更新角色信息
     */
    boolean updateRole(UpdateRoleDTO dto);

    /**
     * 删除角色
     */
    boolean deleteRole(Long id);

    /**
     * 角色分页查询
     */
    Page<RoleVO> getRolePage(RoleQueryDTO queryDTO);

    /**
     * 角色详情查询
     */
    RoleVO getRoleDetail(Long id);

    /**
     * 角色权限分配
     */
    boolean assignAcl(AssignAclDTO dto);

    /**
     * 角色数据权限配置
     */
    boolean assignDataScope(AssignDataScopeDTO dto);

    /**
     * 检查角色编码是否唯一
     */
    boolean checkRoleCodeUnique(String code, Long id);
}
